package collection;

import org.omg.Messaging.SYNC_WITH_TRANSPORT;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

public class ListDemo {
    public static void main(String[] args){
         //ListDemo listDemo = new ListDemo();
         //new ListDemo().containsTest();
        //new ListDemo().removeListElement();
        String endTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now().minusDays(15));
        System.out.println(endTime);
    }

    public void containsTest(){
        List<String> list1 = new ArrayList<>();
        list1.add("a");
        list1.add("b");

        List<String> list2 = new ArrayList<>();
        list2.add("a");
        list2.add("b");

        System.out.println(list1.containsAll(list2));
    }

    public void aboutNull(){
        List<Integer> list1 = Arrays.asList(1,2,3);
        List<Integer> list2 = null;
        list1.addAll(list2);
        System.out.println(list1);
    }

    /**************************************list删除元素***************************************************/
    public void removeListElement(){
        //为什么泛型不可以是基本类型
        Integer[] integersArr = {1,2,3,4,5,6,7,};
        //Arrays.asList()的List集合无法add和remove
        List<Integer> list1 = Arrays.asList(integersArr);

        List<Integer> list2 = new LinkedList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        list2.add(4);
        list2.add(5);
        list2.add(6);
        list2.add(7);
        list2.add(8);

        //每删除一个List2的index会更新，但是for循环中的i没有更新，所以会造成隔一个删一个
        for (int i=0;i<list2.size();i++){
            list2.remove(i);
        }

        for (int i=0;i<list2.size();i++){
            System.out.println(list2.get(i));
        }

        System.out.println("=========ITERRATOR=========");
        //使用迭代器删除
        Iterator iterator = list2.iterator();

        while (iterator.hasNext()){

            int next = (int) iterator.next();
            if (2==next){
                System.out.println(next+"命中");
                iterator.remove();
            }
        }

        System.out.println("==========第二个while循环中的迭代器============");
        //当我们在使用next()方法时指针会向下指一位当你遍历完成之后指针指向最后一位，这时你在调用hasnext()方法时就会返回false
        //以下代码没有任何打印
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        System.out.println("=============被删除后的List集合=============");
        for (Integer i:list2){
            System.out.println(i);
        }
    }
}


